Current File : /var/www/e360ban/wp-content/plugins/wp-shortcodes-usuarios/integraciones/registro.php |
<?php
/**
* Datos de campos personalizados para el formulario de registro
* copyright Enrique J. Ros - enrique@enriquejros.com
*
* @author Enrique J. Ros
* @link https://www.enriquejros.com
* @since 1.0.0
* @package WPShortcodesUsuarios
*
*/
defined ('ABSPATH') or exit;
Class WP_Shortcodes_Usuarios_Registro {
public function __construct ($dato_shortcode, $user_id, $shortcode_id) {
if (!class_exists ('CPT_WC_Campos_Registro'))
return false;
$this->resultado = false;
foreach (CPT_WC_Campos_Registro::pide_query() as $campo) {
if ($campo->post_type == CPT_WC_Campos_Registro::CPT && $dato_shortcode == $campo->post_name) {
$nombre = Clase_WC_Campos_Registro::establece_name($campo);
switch (get_field ('tipo', $campo->ID)['value']) {
case 'text':
case 'email':
case 'number':
case 'password':
case 'textarea':
$this->resultado = get_user_meta ($user_id, $nombre, true);
break;
case 'upload':
if (!$id_archivo = get_user_meta ($user_id, $nombre, true)) //Si no hay archivo asociado
break; //Devolvemos un false
/**
* Si no queremos añadir el enlace al archivo, sino sólo su título:
*
* add_filter ('wp_shortcodes_usuarios_enlace_upload', '__return_false', 10, 1);
*
*/
$this->resultado = apply_filters ('wp_shortcodes_usuarios_enlace_upload', true, $shortcode_id) ? sprintf ('<a target="_blank" href="%s">%s</a>', wp_get_attachment_url ($id_archivo), get_the_title ($id_archivo)) : get_the_title (get_user_meta ($user_id, $nombre, true));
break;
case 'date':
$this->resultado = date_i18n (get_option ('date_format'), strtotime (get_user_meta ($user_id, $nombre, true)));
break;
case 'casilla':
$casilla = apply_filters ('wp_shortcodes_usuarios_casilla', ['marcada' => '✓', 'desmarcada' => '✗'], $shortcode_id);
/**
* Para cambiar los símbolos/textos mostrados según la casilla se hamarcado o no:
*
* add_filter ('wp_shortcodes_usuarios_casilla', function ($textos) {
*
* $textos['marcada'] = 'Texto a mostrar cuando la casilla se ha marcado';
* $textos['desmarcada'] = 'Texto a mostrar cuando la casilla no se ha marcado';
* return $textos;
* }, 10, 1);
*
*/
$this->resultado = ('on' == get_user_meta ($user_id, $nombre, true) ? $casilla['marcada'] : $casilla['desmarcada']);
break;
case 'select':
foreach (get_field ('opciones', $campo->ID) as $opcion => $array_opcion)
if (get_user_meta ($user_id, $nombre, true) == md5 ($array_opcion['opcion']['valor']))
$this->resultado = $array_opcion['opcion']['etiqueta'];
$this->resultado or $this->resultado = __('No se ha marcado ninguna opción', 'wp-shortcodes-usuario');
break;
case 'radio':
foreach (get_field ('opciones', $campo->ID) as $opcion => $array_opcion)
if (get_user_meta ($user_id, $nombre, true) == $nombre . '_' . md5 ($array_opcion['opcion']['valor']))
$this->resultado = $array_opcion['opcion']['etiqueta'];
$this->resultado or $this->resultado = __('No se ha marcado ninguna opción', 'wp-shortcodes-usuario');
break;
case 'checkbox':
$seleccion = [];
foreach (get_field ('opciones', $campo->ID) as $opcion => $array_opcion)
if ('on' == get_user_meta ($user_id, $nombre . '_' . md5 ($array_opcion['opcion']['valor']), true))
$seleccion[] = $array_opcion['opcion']['etiqueta'];
$this->resultado = count ($seleccion) ? implode ($seleccion, ', ') : __('No se ha marcado ninguna opción', 'wp-shortcodes-usuario');
break;
case 'paises':
$this->resultado = WC()->countries->countries[get_user_meta ($user_id, $nombre, true)];
break;
case 'states':
$estados = WC()->countries->get_states();
$this->resultado = $estados[get_field ('states', $campo->ID)][get_user_meta ($user_id, $nombre, true)];
break;
}
}
}
return $this->resultado;
}
}